package wt.rocket.ctrl.persona;

import java.util.List;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.event.Events;
import org.zkoss.zk.ui.util.GenericForwardComposer;
import org.zkoss.zul.*;
import wt.rocket.ctrl.CtrlVista;
import wt.rocket.ctrl.Modos;
import wt.rocket.ctrl.Sesion;
import wt.rocket.ctrl.Vistas;
import wt.rocket.model.beans.Persona;
import wt.rocket.model.servicios.ServicioPersona;

/**
 *
 * @author WayTech
 */
public class CtrlPersonaList extends GenericForwardComposer {

  //widgets:
  Grid grid;
  Label etqNro, etqNombre, etqEmail, etqTelefono, etqDireccion;
  //data:
  List listaDatos;
  ServicioPersona servicio;
  //referencias:
  private Include vistaBarraMenu;
  private CtrlVista ctrlVista;

  @Override
  public void doAfterCompose(Component comp) throws Exception {
    super.doAfterCompose(comp);
    inicio();
  }

  void inicio() {
    buscarData();
    mostrarData();
    //OJO
    notificarBarra();
    ctrlVista = new CtrlVista();
  }

  /**
   * método que simula la búsqueda de la data
   */
  void buscarData() {
    servicio = new ServicioPersona();
    listaDatos = servicio.getPersonas();
  }

  public void mostrarData() {
    if (listaDatos == null) {
      System.out.println("CtrlPersonaList: Lista de Datos Vacía");
      //TODO: mostrar en la vista que no hay datos
    }
    ListModelList model = new ListModelList(listaDatos);
    grid.setModel(model);
    grid.setRowRenderer(new RowRenderer() {

      @Override
      public void render(Row row, Object data, int i) throws Exception {
        //se extrae la data
        Persona p = (Persona) data;

        //se crean los widgets con la data:
        etqNro = new Label("" + ++i);
        etqNombre = new Label("" + p.getNombre());
        etqTelefono = new Label("" + p.getTelefono());
        etqEmail = new Label("" + p.getEmail());
        etqDireccion = new Label("" + p.getDireccionCorta());

        //se anexan los widgets a la fila
        etqNro.setParent(row);
        etqNombre.setParent(row);
        etqTelefono.setParent(row);
        etqEmail.setParent(row);
        etqDireccion.setParent(row);
      }
    });
  }

  //OJO
  /**
   * notifica a barraMenu sobre la vista actual para que esta maneje el estado
   * de los botones
   */
  private void notificarBarra() {
    vistaBarraMenu = Sesion.getvistaBarraMenu();
    Sesion.setVistaActual(Vistas.PERSONA_LISTADO);
    Sesion.setModo(Modos.LISTADO);
    Toolbarbutton btnControl2 = (Toolbarbutton) vistaBarraMenu.getFellow("btnControl2");
    Events.postEvent(1, "onClick", btnControl2, null);
  }

  //OJO
  /**
   * es invocado por la barra de menú, para crear una nueva persona cambia la
   * vista al maestro de líder
   */
  public void onClick$btnNew() {
    Sesion.setVistaSiguiente(Vistas.PERSONA);
    Sesion.setModo(Modos.NEW);
    ctrlVista.forzarCambioVista_btnControl();
  }
}
